package cn.dida.service;

import java.util.List;

import cn.dida.model.Activity;
import cn.dida.model.ActivityPrize;
import cn.dida.model.ActivityRegion;
import cn.dida.model.Pageable;
import cn.dida.model.Product;

/**
 * <p>活动管理   业务层接口</p>
 * @author lisha
 * @date 2016-11-14 14:27
 * */
public interface ActivityService {
	
	/**
	 * 根据id获取活动详情
	 * @param activityId 活动id
	 * @return Activity 活动详情
	 * @date 2016-11-18 17:42
	 * */
    Activity getActivityById(String activityId);
    /**
     * 根据活动id获取中奖规则
     * @param activityId 活动id
     * @return Activity 活动详情
     * @date 2016-11-18 17:42
     * */
   /* ActivityPrize getActivityPrizeById(String activityId);*/
    
	/**
	 * 活动列表
	 * @param name 活动名称
	 * @param cAdmin 创建人
	 * @param sta 活动状态：1正常，0未启用，2手动停用
	 * @param channel 渠道
	 * @param page 分页游标
	 * @return Pageable<Activity> 活动管理分页列表
	 * @date 2016-11-14 14:31
	 * */
	Pageable<Activity> queryActivity(Integer companyId, String name, String cAdmin, Integer sta, String channel, int page);
	/**
	 * 活动列表（数据导出用）
	 * @param companyId 公司id
	 * @param name 活动名称
	 * @param sta 活动状态：1正常，0未启用，2手动停用
	 * @param channel 渠道
	 * @return List<Activity>活动列表
	 * @date 2016-12-07 16:13
	 * */
	List<Activity> queryActivityForExport(Integer companyId, String name, Integer sta, String channel);
	
	/**
	 * 增加活动
	 * @param activity 活动实体信息
	 * @return Boolean 是否增加成功
	 * @date 2016-11-17 14:57
	 * */
    int insertActivity(Activity activity);
    /**
	 * 删除活动
	 * @param id 活动id
	 * @return Boolean 是否删除成功
	 * @date 2016-11-17 14:58
	 * */
    Boolean deleteActivity(Integer companyId,int id);
    /**
	 * 增加活动中奖规则
	 * @param aPrize 活动中奖规则实体信息
	 * @return Boolean 是否增加成功
	 * @date 2016-11-18 13:30
	 * */
    Boolean insertActivityPrize(ActivityPrize aPrize);
    /**
	 * 删除活动与商品关联
	 * @param productId 商品id
	 * @return Boolean 是否删除成功
	 * @date 2016-11-17 14:58
	 * */
   /* Integer deleteActivityProduct(int productId);*/
    /**
     * 更新活动信息
     * @param activity 活动信息
	 * @return Boolean 是否更新成功
	 * @date 2016-11-20 14:59
     * */
    Boolean updateActivity(Integer companyId,Activity activity);
    /**
     * 更新活动规则
     * @param activity 活动信息
     * @return Boolean 是否更新成功
     * @date 2016-11-20 14:59
     * */
    Boolean updateActivityAbstract(Activity activity);
    /**
     * 启用、停用活动
     * @param activityId 活动id
	 * @param type 操作类型:1启用,2停用
     * @return Boolean 是否更新成功
     * @date 2016-11-20 14:59
     * */
    Boolean usingActivity(String activityId,String type);
    /**
	 * 根据活动id获取区域
	 * @param activityId 区域id
	 * @return String 区域名称字符串
	 * @date 2016-11-22 13:30
	 * */
    String getRgnByActivityId(String activityId);
    /**
     * 根据活动id获取区域
     * @param activityId 活动id
     * @return List<ActivityRegion> 活动区域关联列表
     * @date 2016-11-28 21:47
     * */
    List<ActivityRegion> getRgnById(String activityId);
    /**
	 * 中奖规则列表
	 * @param page 分页游标
	 * @param activityId 活动id
	 * @return Pageable<Activity> 活动管理分页列表
	 * @date 2016-11-23 11:55
	 * */
	Pageable<ActivityPrize> queryActivityPrize(int page,String activityId);
	/**
	 * 删除中奖规则
	 * @param activityPrizeId 中奖规则id
	 * @return Boolean 是否操作成功, true删除成功, false失败
	 * @date 2016-11-23 12:03
	 * */
	Boolean deleteActivityPrize(Integer activityPrizeId);
	/**
	 * 删除活动与区域关联
	 * @param activityId 活动id
	 * @return Boolean 是否操作成功, true删除成功, false失败
	 * @date 2016-11-25 10:32
	 * */
	/*Integer delRgnByActivityId(String activityId);*/
	/**
	 * 删除活动与区域关联
	 * @param activityRegionId 活动与区域关联id
	 * @return Boolean 是否操作成功, true删除成功, false失败
	 * @date 2016-11-29 10:26
	 * */
	Integer delRgnByActivityRegionId(String activityRegionId);
	/**
	 * 检查当前选择的商品是否已参加了其它有效的活动
	 * @param selectProids 商品id字符串
	 * @return String 已参加了其它有效活动的商品字符串
	 * @date 2016-11-29 18:10
	 * */
	/*String checkProuct(String selectProids);*/
	
	Pageable<Product> querySelected(Integer companyId, String keyword, Integer state, int page);
	
	
    ActivityPrize getActivityPrizeByapId(String activityPrizeId);
    /**
     * 根据活动id获取中奖比例之和
     * @param activityId 活动id
     * @return double 中奖比例之和
     * @date 2016-12-08 19:02
     * */
    Double getTotalOdds(String activityId);
    /**
     * 根据奖品等级名称和活动id 查看中奖规则是否存在
     * @param activityId 活动id
     * @param gradeName 奖品等级名称
     * @return boolean true存在，false不存在
     * @date 2016-12-12 10:14
     * */
    public boolean isExistsActivityPrize(String activityId, String gradeName);
    /**
     * 根据活动名称 查看活动是否存在
     * @param companyId 公司名称
     * @param name 活动名称
     * @return boolean true存在，false不存在
     * @date 2016-12-12 10:36
     * */
    public boolean isExistsActivity(String companyId, String name);
}
